[UPDATE] AWS Elemental MediaConvertで変換後の動画品質が確認できるMedia Metricsが利用可能になりました!
はじめに
清水です。AWS Media Servicesのアップデートをお届けするコーナーです。本エントリでお届けするアップデート情報はこちら!ブロードキャストグレードの機能を備えたファイルベースの動画変換サービスであるAWS Elemental MediaConvertで変換後の動画コンテンツのビットレートといった品質情報が確認可能なMedia Metricsが利用可能になりました。(2023/04/10付でポストされたアップデート情報となります。)
新たに利用できるようになったMedia Metricsを利用することで、MediaConvertで変換した動画の変換後のビットレートやQVBR品質、ブラックフレーム発生の有無などの確認が可能になります。
このMetricsはAmazon CloudWatchのほか、Amazon EventBridgeとも連携が可能です。CloudWatchで品質状況の全体を監視しつつ、一定のしきい値を下回ったジョブについてはEventBridgeを経由して通知や再変換を行う、などと行った活用ができそうです。MediaConvertを使った動画変換パイプラインがより柔軟になるかと思います。
本エントリではこのMediaConvertに新たに追加されたMedia MetricsについてUser Guideからその内容を確認しつつ、実際のJob変換を通してCloudWatchやEventBridgeでどのような情報が取得できるのかを確認してみました。
CloudWatchで取得可能なMediaConvert Media Metricsについて確認してみる
まずはAmazon CloudWatchで取得可能なMediaConvertのMedia Metricsについて確認していきましょう。AWS Elemental MediaConvert User GuideからMediaConvertで利用できるCloudWatch Metricsがまとめられているページを確認します。以下が該当しますね。
具体的にこの中のどのMetricがMedia Metricsと呼ばれるものであるかは記載がありません。ひとまず今回のアップデート前のMetrics一覧と比較してみましょう。Internet Archive Wayback Machineで以下のページが確認できました。(2022年11月16日時点のページとなります。)
今回のアップデート前後で利用可能になったMetricについて以下の表にまとめてみました。3列目の New? の項目で New!となっているものが新たに利用可能になっているMetricとなります。(対して、3列目の New? の項目が空欄のものは以前から利用可能であったMetricです。)なおそれぞれのMetricの詳細についてはUser Guideをご確認ください。
# | Metric name | New? |
---|---|---|
1 | Errors | New! |
2 | AudioOutputDuration | |
3 | SDOutputDuration | |
4 | HDOutputDuration | |
5 | UHDOutputDuration | |
6 | 8KOutputDuration | |
7 | JobsCompletedCount | |
8 | JobsCanceled | New! |
9 | JobsErroredCount | |
10 | StandbyTime | |
11 | TranscodingTime | |
12 | BlackVideoDetected | New! |
13 | BlackVideoDetectedRatio | New! |
14 | LongestBlackSegmentDetected | New! |
15 | VideoPaddingInserted | New! |
16 | VideoPaddingInsertedRatio | New! |
17 | AvgBitrateTop | New! |
18 | AvgBitrateBottom | New! |
19 | QVBRAvgQualityHighBitrate | New! |
20 | QVBRAvgQualityLowBitrate | New! |
21 | QVBRMinQualityHighBitrate | New! |
22 | QVBRMinQualityLowBitrate | New! |
13個のMetricsが新たに利用可能になっていることがわかりますね。さてこのうち、#1
のErrors
と#8
のJobsCanceld
についてはJobの進行に関することで動画の品質情報とは直接関係なさそうです。そのため本エントリでは独断ではありますが、#12
のBlackVideoDetected
以降、#22
のQVBRMinQualityLowBitrate
までの合計11個のMetricsを Media Metrics として扱います。
各Metricsの具体的な説明についてはUser Guideの記載に任せますが、例えば出力された動画内にブラックフレームが入っていた際(ただしMediaConvertで意図的に挿入したケースを除く)にカウントされるMetric、MediaConvertが空白フレームを挿入したとき(Black video padding)にカウントされるMetric、などととなります。またBitrateやQVBR品質スコアを表したMetricが利用可能になっています。
Media MetricsとEventBridge連携について確認してみる
Media MetricsについてはEventBridge連携も可能です。こちらもまずはAWS Elemental MediaConvert User Guideから確認してみます。
MediaConvertではJobのステータス変化の際、その内容によりいくつかのEventをEventBridgeに送信します。(詳細については List of MediaConvert EventBridge events - MediaConvert を参照ください。) Media Metricsが利用できるのはこの中でも COMPLETE
Event、つまりJob完了時にEventBridgeに通知されるEventとなります。
そのイベント内容についてUser Guideから確認してみましょう。
サンプルのJSONをUser Guideから転記します。こちらの各Propertyの詳細についてはUser Guideを参照ください。
{ "version": "0", "id": "1234abcd-12ab-34cd-56ef-1234567890ab", "detail-type": "MediaConvert Job State Change", "source": "aws.mediaconvert", "account": "111122223333", "time": "2022-12-19T19:07:12Z", "region": "us-west-2", "resources": [ "arn:aws:mediaconvert:us-west-2::jobs/1671476818694-phptj0" ], "detail": { "timestamp": 1671476832124, "accountId": "111122223333", "queue": "arn:aws:mediaconvert:us-west-2:111122223333:queues/Default", "jobId": "1671476818694-phptj0", "status": "COMPLETE", "userMetadata": {}, "warnings": [ { "code": 000000, "count": 1 } ], "outputGroupDetails": [ { "outputDetails": [ { "outputFilePaths": [ "s3://DOC-EXAMPLE-BUCKET/file/file.mp4" ], "durationInMs": 30041, "videoDetails": { "widthInPx": 1920, "heightInPx": 1080, "qvbrAvgQuality": 7.38, "qvbrMinQuality": 7, "qvbrMaxQuality": 8, "qvbrMinQualityLocation": 2168, "qvbrMaxQualityLocation": 25025 } } ], "type": "FILE_GROUP" } ], "paddingInserted": 0, "blackVideoDetected": 10, "blackSegments": [ { "start": 0, "end": 10 } ] } }
先ほどのCloudWatchで取得可能なMedia Metricsと同様のPropertyとして、qvbrAvgQuality
、qvbrMinQuality
、qvbrMaxQuality
、qvbrMinQualityLocation
、qvbrMaxQualityLocation
などBitrateやQVBR品質に関する項目値、そしてpaddingInserted"
、blackVideoDetected
、blackSegments
といったフレームの挿入やブラックフレームの有無に関する項目があることがわかります。(いずれも引用したJSON中でハイライト表示した箇所となります。)
実際のMediaConvertでの動画変換時のMedia Metricsについて確認してみる
User Guideから新たに利用可能になったMedia Metricsについて確認することができました。続いて、実際にMediaConvertで動画変換の処理を通してこのMedia Metricsについて確認してみましょう。
ちょうどこのアップデートの少し前、2023/03/01の時点でのMediaConvert Job COMPLETE時のEventBridgeによる通知がありました。([update] AWS Elemental MediaConvertでアニメーションGIFならびにFLACオーディオを入力ソースとしてサポートするようになりました! | DevelopersIOのブログエントリ執筆時に変換したJobの通知になります。)まずはこのEventBridgeの通知と、最新のEventBridgeの通知を比較、Media Metricsについて確認してみましょう。
なおEventBridgeの通知設定方法については、User Guideや過去のエントリなどを参照ください。私は以前MediaConvertのジョブ進行状況の確認をした際のEventBridge(旧Amazon CloudWatch Events)とAmazon SNS通知の設定が残っていたため、これを利用しました。参考までに、以下のようなEventBridge Ruleが設定されています。
まずはMedia Metrics利用可能のアップデート前、2023/03/01の時点でのイベントが下記になります。
{ "version": "0", "id": "26xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx52", "detail-type": "MediaConvert Job State Change", "source": "aws.mediaconvert", "account": "123456789012", "time": "2023-03-01T12:57:49Z", "region": "ap-northeast-1", "resources": [ "arn:aws:mediaconvert:ap-northeast-1:123456789012:jobs/1111111111111-aaaaaa" ], "detail": { "timestamp": 1677675469794, "accountId": "123456789012", "queue": "arn:aws:mediaconvert:ap-northeast-1:123456789012:queues/Default", "jobId": "1111111111111-aaaaaa", "status": "COMPLETE", "userMetadata": {}, "outputGroupDetails": [ { "outputDetails": [ { "outputFilePaths": [ "s3://my-s3-bucket/202303-mediaconvert-gif/output/animated-gif-01animated-gif-mp4.mp4" ], "durationInMs": 7273, "videoDetails": { "widthInPx": 640, "heightInPx": 360 } } ], "type": "FILE_GROUP" } ] } }
このJobを複製して、再度変換を行いました。出力先だけ変更しています。この再変換の際のイベントが下記になります。
{ "version": "0", "id": "2fxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx15", "detail-type": "MediaConvert Job State Change", "source": "aws.mediaconvert", "account": "123456789012", "time": "2023-04-30T12:35:45Z", "region": "ap-northeast-1", "resources": [ "arn:aws:mediaconvert:ap-northeast-1:123456789012:jobs/2222222222222-bbbbbb" ], "detail": { "timestamp": 1682858145076, "accountId": "123456789012", "queue": "arn:aws:mediaconvert:ap-northeast-1:123456789012:queues/Default", "jobId": "2222222222222-bbbbbb", "status": "COMPLETE", "userMetadata": {}, "outputGroupDetails": [ { "outputDetails": [ { "outputFilePaths": [ "s3://my-s3-bucket/202303-mediaconvert-gif/output/animated-gif-01animated-gif-mp4-20230430.mp4" ], "durationInMs": 7273, "videoDetails": { "widthInPx": 640, "heightInPx": 360, "averageBitrate": 527863, "qvbrAvgQuality": 6.94, "qvbrMinQuality": 6.67, "qvbrMaxQuality": 7, "qvbrMinQualityLocation": 633, "qvbrMaxQualityLocation": 0 } } ], "type": "FILE_GROUP" } ], "paddingInserted": 0, "blackVideoDetected": 0 } }
videoDetails
の項目内にaverageBitrate
やqvbrAvgQuality
など、BitrateやQVBR品質に関する項目が追加されています。また今回のJobではPaddingやBlackVideoなどは発生してませんが、それぞれが0
であることが確認できます。
CloudWatchのMetricsについても確認してみましょう。MediaConvertのMetrics内、例えばQueue Metricsにて今回のアップデートのMedia Metricsが確認できます。その中のいくつかを表示させてみました。
まとめ
AWS Elemental MediaConvertで新たに利用可能になったMedia Metricsについて、その内容をUser Guideで確認しつつ、実際に動画変換後のEventや取得できるMetricsを確認してみました。これまでも、例えば変換後の動画をMediaInfoなど外部ツールと連携させることで、そのBitrateなど動画の品質に関する情報を取得すること自体は可能でした。今回のアップデートと同様なことを実現するのであれば、MediaConvertでのS3への出力(変換後のファイルの書き出し)をトリガとしてLambdaを起動しMediaInfoを実行、得られた情報をCloudWatchのCustom Metricsとして登録というかたちでしょうか。今後はこれらのBitrateなど品質に関する情報取得は特に作り込みなどを行わずともMedia Metricsを利用するだけで取得が可能になります!Bitrateのみならず、Black Video Framesなど動画自体の品質に関する情報も含まれている点が嬉しいポイントですよね。上手に活用することで、より柔軟で多機能な動画変換パイプラインが構築できるかと思います。